/*
	与fork不同, vfork不完全复制父进程的数据段，而是共享父进程的数据段;
	与fork不同, vfork对于父子进程的执行次序有所限制, 调用vfork时,父进程被挂起，子进程运行玩exec函数族函数或调用exit时解除父进程的挂起状态.
*/

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>

int main(int argc, char * argv[]) {
	pid_t pid;

	if((pid = vfork()) < 0) {
		fprintf(stdout, "%s", "Vfork error.\n");
		exit(1);
	} else if (pid == 0){
		fprintf(stdout, "%s\n", "Child process is printing.");
	} else {
		fprintf(stdout, "%s\n", "Parent process is printing.");
	}

	exit(0);
}
